/*******************************************************************************
 * Classe Sauvegarder : création et gestion de l'écran de sauvegade
 ******************************************************************************/
package tp2;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

/**
 *
 * @author W&G
 */
public class Sauvegarder extends JPanel {

    private Fenetre fenetre;//Fenetre du programme
    private JLabel lblTitre = new JLabel("Sauvegarder");//titre du panneau
    private JLabel lblMessage = new JLabel("");//Message de confirmation
    private JButton btnRetour = new JButton("Retour");//bouton retour
    private JPanel pnlConteneur = new JPanel();//Panneau conteneur
    //Panneau principal
    private JPanel pnlPrincipal = new JPanel(new GridLayout(14, 1));
    private JPanel pnlMessage = new JPanel();//Panneau contenant le message
    //Bouton pour sauvegarder dans des fichiers différents
    private JButton btnSlot1 = new JButton("Slot 1");
    private JButton btnSlot2 = new JButton("Slot 2");
    private JButton btnSlot3 = new JButton("Slot 3");
    private JButton btnSlot4 = new JButton("Slot 4");
    private JButton btnSlot5 = new JButton("Slot 5");
    private JButton btnSlot6 = new JButton("Slot 6");
    private JButton btnSlot7 = new JButton("Slot 7");
    private JButton btnSlot8 = new JButton("Slot 8");
    private JButton btnSlot9 = new JButton("Slot 9");
    private JButton btnSlot10 = new JButton("Slot 10");
    private boolean retour = false;// variable de retour
    private boolean resetter;//variable de réinitialisation

    public Sauvegarder(Fenetre fenetre) {
        this.fenetre = fenetre;

        ajouterElements();
    }

    private void ajouterElements() {//ajoute les éléments au panneau
        lblTitre.setForeground(Color.CYAN);
        lblTitre.setHorizontalAlignment(SwingConstants.CENTER);
        lblMessage.setForeground(Color.RED);

        pnlConteneur.setBackground(fenetre.getFond());
        pnlPrincipal.setBackground(fenetre.getFond());
        pnlMessage.setBackground(fenetre.getFond());

        pnlPrincipal.setPreferredSize(new Dimension(183, 384));

        pnlPrincipal.add(lblTitre);
        pnlPrincipal.add(btnSlot1);
        pnlPrincipal.add(btnSlot2);
        pnlPrincipal.add(btnSlot3);
        pnlPrincipal.add(btnSlot4);
        pnlPrincipal.add(btnSlot5);
        pnlPrincipal.add(btnSlot6);
        pnlPrincipal.add(btnSlot7);
        pnlPrincipal.add(btnSlot8);
        pnlPrincipal.add(btnSlot9);
        pnlPrincipal.add(btnSlot10);
        pnlPrincipal.add(new JLabel());
        pnlPrincipal.add(btnRetour);

        pnlMessage.add(lblMessage);

        pnlPrincipal.add(pnlMessage);
        pnlConteneur.add(pnlPrincipal);

        this.add(pnlConteneur);

        btnSlot1.addActionListener(new BoutonPresse());
        btnSlot2.addActionListener(new BoutonPresse());
        btnSlot3.addActionListener(new BoutonPresse());
        btnSlot4.addActionListener(new BoutonPresse());
        btnSlot5.addActionListener(new BoutonPresse());
        btnSlot6.addActionListener(new BoutonPresse());
        btnSlot7.addActionListener(new BoutonPresse());
        btnSlot8.addActionListener(new BoutonPresse());
        btnSlot9.addActionListener(new BoutonPresse());
        btnSlot10.addActionListener(new BoutonPresse());
        btnRetour.addActionListener(new BoutonPresse());
    }
//Sauvegarde les données dans ls fichiers
    private void sauvegarder(JButton slot) {
        try {
            PrintWriter fw = new PrintWriter(new FileWriter(slot.getText() + ".txt"));
            for (int i = 0; i < Jeu.getCases().length; i++) {
                for (int j = 0; j < Jeu.getCases()[i].length; j++) {
                    fw.print(Jeu.getCases()[i][j].getEtat().toString() + ";");
                }
            }
            fw.print(Case.getJoueurCourant().toString() + ";");
            fw.print("" + Case.getSuperReddDejaJoue1() + ";");
            fw.print("" + Case.getSuperReddDejaJoue2() + ";");
            fw.close();
            lblMessage.setText("Partie sauvegardée.");
            Jeu.setSauvegarde(true);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            lblMessage.setText("Erreur lors de la sauvegarde.");
        }

    }

    public void setRetour(boolean retour) {//retourne la vaariable de retour
        this.retour = retour;
    }
//retourne la variable de réinitialisation
    public void setResetter(boolean reset) {
        this.resetter = reset;
    }
//classe de gestion des evenements
    class BoutonPresse implements ActionListener {

        public void actionPerformed(ActionEvent ae) {
            if (ae.getSource() == btnRetour) {
                lblMessage.setText("");
                if (retour) {
                    fenetre.afficherJeu();
                } else {
                    fenetre.afficherMenuPrincipal();
                    if (resetter) {
                        Jeu.mettreAZero();
                    }
                }
            } else {
                sauvegarder((JButton) ae.getSource());
            }
        }
    }
}
